
from django.db import models

class TravelInfo(models.Model):
    # 模型字段定义部分：
    # id = models.AutoField('id', primary_key=True)：定义了一个自增的整数类型字段 id 作为主键，用于唯一标识每条旅游信息记录。
    # AutoField 会自动按照数据库的规则来生成递增的整数值，primary_key=True 明确指定其为主键字段。
    id = models.AutoField('id',primary_key=True)
    # 其他如 title、level、discount 等字段大多使用了 models.CharField 来定义，它用于表示字符串类型的字段。
    # 每个 CharField 都指定了一个人类可读的名称（作为第一个参数，用于在一些后台显示等场景更友好地展示字段含义，比如 '景区名' 对应 title 字段），
    # 以及最大长度（通过 max_length 参数限制，例如 title 字段最大长度为 255 个字符），同时设置了默认值（default=''，表示为空字符串）。
    title = models.CharField('景区名',max_length=255,default='')
    level = models.CharField('等级',max_length=255,default='')
    discount = models.CharField('折扣',max_length=255,default='')
    saleCount = models.CharField('销量',max_length=255,default='')
    province = models.CharField('省份',max_length=255,default='')
    star = models.CharField('热度',max_length=255,default='')
    detailAddress = models.CharField('景点详情地址',max_length=255,default='')
    shortIntro = models.CharField('短评',max_length=255,default='')
    detailUrl = models.CharField('详情地址',max_length=255,default='')
    score = models.CharField('评分',max_length=255,default='')
    price = models.CharField('价格',max_length=255,default='')
    commentsLen = models.CharField('评论个数',max_length=255,default='')
    detailIntro = models.CharField('详情介绍',max_length=2555,default='')
    img_list = models.CharField('图片列表',max_length=2550,default='')
    # comments = models.TextField('用户评论', default='')：使用 TextField 定义了 comments 字段，用于存储较长的文本内容，
    # 比如用户对旅游景点的详细评论，与 CharField 相比，它更适合存储大量文本，没有固定的长度限制
    comments = models.TextField('用户评论',default='')
    cover = models.CharField('封面',max_length=2555,default='')
    # createTime = models.DateField('爬取时间', auto_now_add=True)：定义了一个日期类型的字段 createTime，用于记录旅游信息的爬取时间，
    # auto_now_add=True 表示当创建这条记录时，会自动将当前日期填充到该字段，后续记录更新时该字段值不会自动改变。
    createTime = models.DateField('爬取时间',auto_now_add=True)

    class Meta:
        # db_table = "app_travelinfo"：通过 Meta 类中的 db_table 属性指定了该模型对应的数据库表名，
        # 这里明确说明在数据库中存储旅游信息的表名为 app_travelinfo，这样 Django 就知道将这个模型的数据持久化到哪个具体的表中了。
        db_table = "app_travelinfo"
        # verbose_name_plural = verbose_name = '旅游信息表'：设置了模型在 Django 管理后台等地方显示的名称，无论是单数形式还是复数形式，
        # 都显示为 '旅游信息表'，方便管理员直观地识别该表对应的功能和内容。
        verbose_name_plural = verbose_name = '旅游信息表'    #设置后台显示的名称
    # __str__ 方法部分：
    # 定义了 __str__ 方法，当在一些需要将该模型对象以字符串形式展示的场景（比如在后台列表显示或者调试输出等）下，
    # 会返回该旅游信息对象的 title 属性值，也就是景区名，这样可以更直观地了解对应的记录代表哪个景区。
    def __str__(self):
        return self.title                       #显示该表的字段




class User(models.Model):
    # 和 TravelInfo 模型类似，首先定义了自增主键 id。然后有 username、password、sex 等字段使用 CharField 定义，用于存储用户名、密码、性别等信息，
    # 都有相应的最大长度限制和默认值设置。
    id = models.AutoField('id',primary_key=True)
    username = models.CharField('用户名',max_length=255,default='')
    password = models.CharField('密码',max_length=255,default='')
    sex = models.CharField('性别',max_length=255,default='')
    address = models.CharField('地址',max_length=255,default='')
    # avatar = models.FileField('头像', upload_to='avatar', default='avatar/default.png')：这里使用 FileField 定义了 avatar 字段，
    # 用于存储用户头像文件，upload_to 参数指定了文件上传后存储的相对路径（这里表示会上传到 avatar 目录下），默认值为 avatar/default.png，
    # 可能表示如果用户没有上传头像，会使用默认的头像图片。
    avatar = models.FileField('头像',upload_to='avatar',default='avatar/default.png')
    textarea = models.CharField('个人简介',max_length=255,default='这个人很懒，什么有没留下。')
    # createTime = models.DateField('创建时间', auto_now_add=True)：用于记录用户账户的创建时间，
    # 创建时自动填充当前日期且后续更新记录时该时间不会自动改变。
    createTime = models.DateField('创建时间',auto_now_add=True)

    class Meta:
        # db_table = "app_user"：指定该模型对应的数据库表名为 app_user，明确数据在数据库中的存储位置。
        db_table = "app_user"
        # verbose_name_plural = verbose_name = '用户表'：设置模型在管理后台等地方显示的统一名称为 '用户表'，便于识别。
        verbose_name_plural = verbose_name = '用户表'  # 设置后台显示的名称
    # __str__ 方法部分：
    # 定义了 __str__ 方法，使得在相关场景下将用户对象以字符串形式展示时，会返回用户的 username 属性值，也就是用户名，
    # 方便直观地知晓对应的是哪个用户记录。
    def __str__(self):
        return self.username  # 显示该表的字段


